package model.carrerasYPlanes;

import java.util.ArrayList;
import java.util.List;
import model.alumnos.AlumnoEnCarrera;
import model.materiasYCatedras.MateriaPorPlanDeEstudio;

public class PlanDeEstudio {
	
	private String nombre;
	private Carrera carrera;
	private List<MateriaPorPlanDeEstudio> materias;
	private List<AlumnoEnCarrera> alumnos;
	private OrdenOrientativo ordenOrientativo;
	
	public PlanDeEstudio(String nombre, Carrera carrera){
		super();
		this.nombre = nombre;
		this.materias = new ArrayList<MateriaPorPlanDeEstudio>();
		this.alumnos = new ArrayList<AlumnoEnCarrera>();
		this.ordenOrientativo = new OrdenOrientativo(this);
		this.carrera = carrera;
		carrera.agregarPlanDeEstudio(this);
	}
	
	public PlanDeEstudio(String nombre){
		super();
		this.nombre = nombre;
		this.materias = new ArrayList<MateriaPorPlanDeEstudio>();
		this.alumnos = new ArrayList<AlumnoEnCarrera>();
		this.ordenOrientativo = new OrdenOrientativo(this);
	}

	public void agregarAlumno(AlumnoEnCarrera alumno){
		this.alumnos.add(alumno);
		alumno.setPlanDeEstudio(this);
	}
	
	public void agregarMateria(MateriaPorPlanDeEstudio materia){
		this.materias.add(materia);
	}
	
	//*******************
	// GETTERS Y SETTERS
	//*******************

	public String getNombre() {
		return nombre;
	}
	
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	
	public OrdenOrientativo getOrdenOrientativo() {
		return ordenOrientativo;
	}

	public void setOrdenOrientativo(OrdenOrientativo ordenOrientativo) {
		this.ordenOrientativo = ordenOrientativo;
	}
	
	public List<MateriaPorPlanDeEstudio> getMaterias() {
		return materias;
	}
	
	public void setMaterias(List<MateriaPorPlanDeEstudio> materias) {
		this.materias = materias;
	}

	public Carrera getCarrera() {
		return carrera;
	}

	public void setCarrera(Carrera carrera) {
		this.carrera = carrera;
	}

	public List<AlumnoEnCarrera> getAlumnos() {
		return alumnos;
	}

	public void setAlumnos(List<AlumnoEnCarrera> alumnos) {
		this.alumnos = alumnos;
	}
	
	public int getCreditos(){
		int creditosTotales = 0;
		for(MateriaPorPlanDeEstudio unaMateria : this.getMaterias()){
			creditosTotales = creditosTotales + unaMateria.getCreditos();
		}
		return creditosTotales;
	}
}